package br.com.srv.util;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;

public class FileHelper {
	public static byte[] getBytesFromFile(File file) throws IOException {
		InputStream is = new FileInputStream(file);

		/*
		 * Get the size of the file
		 */
		long length = file.length();

		/*
		 * You cannot create an array using a long type. It needs to be an int
		 * type. Before converting to an int type, check to ensure that file is
		 * not larger than Integer.MAX_VALUE.
		 */
		if (length > Integer.MAX_VALUE) {
			throw new IOException("File is too large: " + file.getName());
		}

		/* Create the byte array to hold the data */
		byte[] bytes = new byte[(int) length];

		/* Read in the bytes */
		int offset = 0;
		int numRead = 0;
		while (offset < bytes.length && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
			offset += numRead;
		}

		/* Ensure all the bytes have been read in */
		if (offset < bytes.length) {
			throw new IOException("Could not completely read file " + file.getName());
		}

		/* Close the input stream and return bytes */
		is.close();
		return bytes;
	}

	public static boolean writeToFile(String fileName, String dataString) {
		try {
			PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(fileName)));
			out.print(dataString);
			out.flush();
			out.close();
		} catch (IOException e) {
			return false;
		}
		return true;
	}
}
